/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionActividades;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import gestionJDBC.*;
import gestionJugadores.*;

/**
 *
 * @author Crisanto
 */
public class ActividadDB {
    private static gestorJDBC gestor = gestorJDBC.getInstance();
    
    public ActividadDB(){};
    
       public int CrearActividad(String nom, String dir, String loc, String fi, String ff, String des){
	
       int id = -1;
       ResultSet rs;
       boolean valido;
       
       gestor.Conectar();
             
        valido = gestor.Insertar("INSERT INTO Actividades (nombre, direccion, localidad, fe_inicio, "
                                            + "fe_final, descripcion, alta) "
                                            + "VALUES ('"+ nom + "','" + dir + "','" + loc + "','" + fi + "','" + ff 
                                            + "','" + des + "',1)");
   
        
        rs=gestor.Consultar("SELECT max(Actividades.id_actividad) AS max_id FROM Actividades");
        try {            
            rs.next();
            id=(Integer) rs.getObject("max_id");
               
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "No se puede obtener el numero de actividades registradas\n"+e.getMessage());
        }
         
        gestor.Desconectar();

	return id;
    }
       
    public boolean setActividad(int id, String nom, String dir, String loc, String fi, String ff, String des){
	
        gestor.Conectar();
        
	Boolean valido = gestor.Modificar("UPDATE Actividades SET nombre='"+ nom +"', direccion='" + dir + "', localidad='" + loc 
                                            + "',fe_inicio ='"+ fi +"', fe_final='"+ ff +"', descripcion='"+ des +"'  WHERE id_actividad='"+id+"'");
	

	gestor.Desconectar();
	return valido;
    }
    
    public Actividad getActividad(String nom) {
	gestor.Conectar();
	ResultSet rs = gestor.Consultar("SELECT * FROM Actividades WHERE nombre='" + nom
						+ "'");
	Actividad a = new Actividad();

	try {
            rs.next();
            a.SetIdActividad((Integer) rs.getObject("id_actividad"));
            a.SetNombre(rs.getObject("nombre").toString());
            a.SetDireccion(rs.getObject("direccion").toString());
            a.SetLocalidad(rs.getObject("localidad").toString());
            a.SetFecha_inicio(rs.getObject("fe_inicio").toString());
            a.SetFecha_final(rs.getObject("fe_final").toString());
            a.SetDescripcion(rs.getObject("descripcion").toString());
            a.SetAlta((Integer) rs.getObject("alta"));
        } catch (SQLException e) {
            a.SetIdActividad(-1);
	}
        
        ArrayList<Jugador> jugadores = new ArrayList<Jugador>();
        rs = gestor.Consultar("SELECT J.* FROM Participa P, Jugador J WHERE J.id_jugador = P.id_jugador and "
                + "P.id_actividad='" + a.GetIdActividad() + "'");
         
        int i = 0; 
        try{
            while(rs.next()){
                
                jugadores.add(new Jugador());
                jugadores.get(i).setId_jugador((Integer) rs.getObject("id_jugador"));
                jugadores.get(i).setNombre(rs.getObject("nombre").toString());
                jugadores.get(i).setApellido1(rs.getObject("apellido1").toString());
                jugadores.get(i).setApellido2(rs.getObject("apellido2").toString());
                jugadores.get(i).setFecha_nacimiento(rs.getObject("fecha_nacimiento").toString());
                jugadores.get(i).setAltura((Double) rs.getObject("altura"));
                jugadores.get(i).setDomicilio(rs.getObject("domicilio").toString());
                jugadores.get(i).setLocalidad(rs.getObject("localidad").toString());
                jugadores.get(i).setCodigo_postal((Integer) rs.getObject("codigo_postal"));
                jugadores.get(i).setProvincia(rs.getObject("provincia").toString());
                jugadores.get(i).setTalla(rs.getObject("talla").toString());
                jugadores.get(i).setAlta(rs.getObject("alta").toString());
                jugadores.get(i).setColegio(rs.getObject("colegio").toString());
                jugadores.get(i).setEquipo_ant(rs.getObject("equipo_ant").toString());
                jugadores.get(i).setRopa(rs.getObject("ropa").toString());
                
                i++;
            }
        }catch(SQLException e ){
            JOptionPane.showMessageDialog(null,"Error al obtener la lista de jugadores\n"
							+ e.getMessage());
	}
        a.SetJugadores(jugadores);
        
	gestor.Desconectar();
	return a;
    }
    
    public Boolean DarBajaActividad(int id) {

	gestor.Conectar();
        
	boolean valido = gestor.Modificar("UPDATE Actividades SET alta=0 WHERE id_actividad='" + id + "'");
	gestor.Desconectar();
	
        return valido;
    }
    
    public Boolean AsociarJugadorActividad(int id_jugador, int id_actividad){
    
        gestor.Conectar();
    
        boolean valido = gestor.Insertar("INSERT INTO Participa (id_jugador, id_actividad) "
                                            + "VALUES ('"+ id_jugador + "','" + id_actividad +"')");
        
        gestor.Desconectar();
	return valido;

    }
    
    public Boolean BajaJugadorActividad(int id_jugador, int id_actividad){
        gestor.Conectar();
        
	boolean valido = gestor.Modificar("DELETE FROM Participa WHERE id_jugador='" + id_jugador + "',id_actividad='" + id_actividad + "'");
	gestor.Desconectar();
	
        return valido;
    }

    
    
}
